
requests (python)
Dépôt GitHub : https://github.com/psf/requests
Journaux liées à cette note :
Journal du jeudi 17 juillet 2025 à 15:44
Voici comment perdre presque deux heures bêtement !
#!/usr/bin/env python3
import requests
import os
session = requests.Session()
session.headers.update({"Content-Type": "application/json"})
auth_response = session.post(
"http://localhost:3000/api/v1/auths/signin",
json={
"email": "contact+admin@stephane-klein.info",
"password": os.environ['OPEN_WEBUI_ADMIN_PASSWORD']
}
)
session.headers.update({
"Authorization": f'Bearer {auth_response.json()["token"]}'
})
with open("hello_world.py", "r") as f:
response = session.post(
"http://localhost:3000/api/v1/pipelines/upload",
files={
"file": ("hello_world3.py", f, "text/x-python")
},
data={
"urlIdx": "2"
}
)
print(response.text)
L'API de Open WebUI envoyait cette erreur :
{"detail":[{"type":"missing","loc":["body","urlIdx"],"msg":"Field required","input":null},{"type":"missing","loc":["body","file"],"msg":"Field required","input":null}]}
Mon erreur se situé au niveau de la ligne :
session.headers.update({"Content-Type": "application/json"})
Si je supprime cette ligne, le script fonctionne parfaitement.
Il semble que la fonction session.post()
ne configure pas correctement le Content-Type
multipart lorsque ce header a été défini au préalable au niveau de la session.
J'ai cherché pendant quelques minutes une issue à ce sujet, sans succès.
Dans l'idéal, requests devrait émettre un warning dans cette situation.
Je viens de créer cette issue : "POST Multipart-Encoding does not work if the Content-Type header has been previously defined in the session"
#UnJourPeuxÊtre je proposerai aussi une implémentation.
D'autre part, ma configuration :
session.headers.update({"Content-Type": "application/json"})
n'avait aucune utilité puisque post
définit automatiquement "Content-Type": "application/json"
quand on utilise le paramètre json=
🙈.